export default {
  namespaced: true,
  state: {
    //定义一个放购物车的容器
    //这个数据来自于product中handleClick点击事件
    carts: [],
  },
  mutations: {
    //用于设置cars的内容
    SETCATDATA(state, payload) {
      //需要定义购物车数据
      //数据包含商品名称、商品价格、商品id、count
      let obj = {
        title: payload.title,
        price: payload.price,
        id: payload.id,
        count: 1,
      };
      //判断state.carts中是否存在此数据?
      //如果存在则不需要添加
      //js find方法
      //通过id去判断
      let target = state.carts.find((item) => item.id === payload.id);
      if (!target) {
        state.carts.push(obj);
      } else {
        //如果当前属性被重复添加
        //我们就让count++
        target.count++;
      }
    },
    //点击让数量减少一
    DECREASE_CART(state, payload) {
      //这个就是添加的当前数据
      //引用数据地址
      //  payload.count--
      //根据当前id查找
      let target = state.carts.find(item => item.id === payload.id);
      if (target) {
        target.count--;
      }
      //判断count属性
      //如果数量=0需要从carts数组中过滤掉
      if(target.count ===0){
        //当前count数量为零需要过滤
        state.carts = state.carts.filter(item => item.id !== target.id)
      }
    },
  },
  getters: {
    //获取当前一个卡
    SETCARPRICE(state){
      return (state.carts.reduce((total,item)=> total+=item.price*item.count,0)).toFixed(1)
    }
  },
  actions: {
    //定义添加购物者的方法
    //将product的数据与car接轨
    ADD_SHOP_CAR(context, payload) {
      context.commit("SETCATDATA", payload);
      //在这里触发product.js中的SETINVENTORY
      //操作product.jsd的muation 方法名跟上 开启跟实力
      context.commit("product/SETINVENTORY", payload.id, { root: true });
    },
    //将库存移除购物车
    REMOVE_CAR(context, payload) {
      //car中的count属性减一
      //product中的inventory+1
      //通过muation的属性进行修改
      context.commit("DECREASE_CART", payload);
      context.commit("product/INCREASE_INVENTORY",payload,{root:true})
    },
  },
  modules: {},
};
